from PyQt5.QtWidgets import *
import sys
 
class QLabelBuddy(QDialog):
    def __init__(self):
        super(QLabelBuddy, self).__init__()
        self.initUI()
 
    def initUI(self):
        self.setWindowTitle('QLabel与伙伴关系')
        self.resize(400,150)
        # &代表设置热键，其后第一个字母就是热键，不区分大小写，Alt+热键调用即可
        nameLabel=QLabel('&Name(N)',self) #designer下的label
        nameLineEdit=QLineEdit(self) # designer下的lineEdit,即文本输入框
        #设置伙伴关系
        nameLabel.setBuddy(nameLineEdit)
 
        passwordLabel = QLabel('&Password(P)', self)  # designer下的label
        passwordLineEdit = QLineEdit(self)  # designer下的lineEdit,即文本输入框
        # 设置伙伴关系
        passwordLabel.setBuddy(passwordLineEdit)
 
        btnOK=QPushButton('&OK(O)')
        btnCancel=QPushButton('&Cancel(C)')
        #栅格布局
        mainlayout=QGridLayout(self)
        mainlayout.addWidget(nameLabel,0,0) #放在第一行第一列
        # 放在第一行第二列，占用空间大小为一行两列(占用大小一行两列意思就是编辑框宽是标签控件的两倍)
        mainlayout.addWidget(nameLineEdit,0,1,1,2)
        mainlayout.addWidget(passwordLabel,1,0)#放在第二行第一列
        mainlayout.addWidget(passwordLineEdit,1,1,1,2)#放在第二行第二列，占用空间大小为一行两列
 
        mainlayout.addWidget(btnOK,2,1)#第三行第二列
        mainlayout.addWidget(btnCancel,2,2)#第三行第三列
        return
 
if __name__=='__main__':
    app=QApplication(sys.argv)
    main=QLabelBuddy()
    main.show()
    sys.exit(app.exec_())
